package base.dao;

import java.io.Serializable;
import java.util.Collection;
import java.util.List;

public abstract interface IGenericDAO
{
  public abstract <T> T findById(Class<T> paramClass, Serializable paramSerializable);
  
  public abstract <T> List<T> findAll(Class<T> paramClass);
  
  public abstract <T> List<T> findAllWithSort(Class<T> paramClass, String paramString1, String paramString2, Object... paramVarArgs);
  
  public abstract List findByHQL(String paramString, Object[] paramArrayOfObject);
  
  public abstract List findByHQLWithMax(String paramString, Object[] paramArrayOfObject, int paramInt);
  
  public abstract List findByHQL(String paramString);
  
  public abstract List findByHQLWithMax(String paramString, int paramInt);
  
  public abstract List findByNamedHQL(String paramString, String[] paramArrayOfString, Object[] paramArrayOfObject);
  
  public abstract List findByNamedHQLWithMax(String paramString, String[] paramArrayOfString, Object[] paramArrayOfObject, int paramInt);
  
  public abstract <T> T findOneByProperties(Class<T> paramClass, String paramString, Object paramObject, Object... paramVarArgs);
  
  public abstract <T> T findOneByPropertiesWithSort(Class<T> paramClass, String paramString1, String paramString2, String paramString3, Object paramObject, Object... paramVarArgs);
  
  public abstract <T> List<T> findByProperties(Class<T> paramClass, String paramString, Object paramObject, Object... paramVarArgs);
  
  public abstract <T> List<T> findByPropertiesWithSort(Class<T> paramClass, String paramString1, String paramString2, String paramString3, Object paramObject, Object... paramVarArgs);
  
  public abstract long getRecordCountByHQL(String paramString);
  
  public abstract long getRecordCountBySQL(String paramString);
  
  public abstract String generatePk();
  
  public abstract Long getSequence(String paramString);
  
  public abstract Serializable save(Object paramObject)
    throws Exception;
  
  public abstract void update(Object paramObject)
    throws Exception;
  
  public abstract void saveAll(Collection<Object> paramCollection, int paramInt);
  
  public abstract void updateAll(Collection<Object> paramCollection, int paramInt);
  
  public abstract void deleteAll(Collection<Object> paramCollection, int paramInt);
  
  public abstract void mergeAndUpdate(Object paramObject)
    throws Exception;
  
  public abstract void enable(Class paramClass, String paramString)
    throws Exception;
  
  public abstract void disabled(Class paramClass, String paramString)
    throws Exception;
  
  public abstract void deleteLogic(Class paramClass, String paramString)
    throws Exception;
  
  public abstract void executeUpdateHQL(String paramString, String[] paramArrayOfString, Object[] paramArrayOfObject)
    throws Exception;
  
  public abstract void executeUpdateSQL(String paramString)
    throws Exception;
  
  public abstract int executePreparedStatementSQL(String paramString, List<Object[]> paramList)
    throws Exception;
}
